package com.py.credit.service;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import com.py.credit.entity.ApplicationEntity;
import com.py.credit.entity.BranchEntity;
import com.py.credit.entity.EasyCreditLogEntity;
import com.py.credit.entity.HireEntity;
import com.py.credit.entity.ReportCustom;
import com.py.framework.core.common.Page;

public interface EasyCreditApplicationService {

	/**
	 * 查询应用列表
	 * @param name
	 * @param userType
	 * @param columns
	 * @param additionalColumns
	 * @param conditionStr
	 * @param page
	 * @return
	 */
	List<ApplicationEntity> selectByConditionForPage(String name, String userType, List<String> columns,
			String[] additionalColumns, String conditionStr, Page page);

	/**
	 * 查询单个应用信息
	 * @param id
	 * @param name
	 * @return
	 */
	List<ApplicationEntity> getOneInfo(String id, String name);

	/**
	 * 获取信息审核通过数量
	 * @return
	 */
	Integer getTourPassCount();

	/**
	 * 获取信易签审核通过数量
	 * @param applicationType
	 * @return
	 */
	Integer getHirePassCount(String applicationType);

	/**
	 * 查看应用是否使用
	 * @param name
	 * @return
	 */
	String checkInUseApp(String name);

	/**
	 * 添加应用信息
	 * @param entity
	 */
	void add(ApplicationEntity entity);

	/**
	 * 修改应用信息
	 * 
	 * @param entity
	 */
	void modify(ApplicationEntity entity);

	/**
	 * 获取单个模型信息
	 * @return
	 */
	List<Map> getOneModel();

	/**
	 * 添加批次信息
	 * @param startTime
	 * @param endTime
	 * @param batchType
	 * @param productNum
	 */
	void addBatch(String startTime, String endTime, String batchType, String productNum);

	/**
	 * 删除批次信息
	 * @param batchId
	 */
	void deleteBatch(@Param(value = "batchId") List<String> batchId);

	/**
	 * 查询批次信息
	 * @param date
	 * @param page
	 * @return
	 */
	List<Map> selectBatch(String date, Page page);

	/**
	 * 添加申请记录
	 * @param entity
	 * @param app
	 * @param dirpath
	 * @param url
	 * @throws Exception
	 */
	void addBranch(BranchEntity entity, ApplicationEntity app, String dirpath, String url) throws Exception;

	/**
	 * 更新申请的记录的使用状态
	 * @param id
	 */
	void updateBranchInUse(@Param(value = "id") String id);

	/**
	 * 更新申请的记录的删除状态
	 * @param id
	 */
	void updateBranchInDel(List<String> id);

	/**
	 * 更新申请的记录的审核状态
	 * @param isPass
	 * @param id
	 */
	void updateBranchInPass(String isPass, @Param(value = "id") String id);

	/**
	 * 判断信易游是否使用
	 * @param id
	 * @return
	 */
	String checkInUse(@Param(value = "id") String id);

	/**
	 * 获取申请记录列表
	 * @param ztmc
	 * @param applicationType
	 * @param branchId
	 * @param page
	 * @return
	 */
	List<Map> getBranchInfo(String ztmc, @Param(value = "applicationType") String applicationType,
			@Param(value = "branchId") String branchId, Page page);

	/**
	 * 添加信易租信息
	 * @param entity
	 * @param userId
	 * @return 
	 */
	void addHire(HireEntity entity, String userId);

	/**
	 * 查询信易租 信息
	 * @param infoId
	 * @return
	 */
	HireEntity selectHire(String infoId);

	/**
	 * 添加日志信息
	 * @param entity
	 * @param url
	 * @param dirpath
	 * @throws Exception
	 */
	void addLog(EasyCreditLogEntity entity, String url, String dirpath) throws Exception;

	/**
	 * 查询日志信息
	 * @param page
	 * @return
	 */
	List<EasyCreditLogEntity> selectLog(Page page);

	/**
	 * 获取token列表
	 * @param batchId
	 * @param page
	 * @return
	 */
	List<Map<String, Object>> getTokenDetail(String batchId, Page page);

	/**
	 * 停用，启用批次
	 * @param id
	 * @param type
	 */
	void updateBatchIsUser(String id, String type);

	/**
	 * 查询单个批次信息
	 * @return
	 */
	String selectOneBatch();

	/**
	 * 查询单个申请记录信息
	 * @param id
	 * @return
	 */
	Map selectOneBranch(String id);

	/**
	 * 获取图片路径信息
	 * @param pathName
	 * @param id
	 * @return
	 */
	String getPhotoPath(String id);

	/**
	 * 获取图片路径信息
	 * @param pathName
	 * @param id
	 * @return
	 */
	String getPhotoPath(String pathName, String id, String type);

	/**
	 * 获取多条租赁信息
	 * @param infoId
	 * @return
	 */
	List<HireEntity> getHireForWeixin(String userId);

	/**
	 * 获取用户信息
	 * @param userName
	 * @return
	 */
	Map<String, Object> getUser(String userName);

	List<Map<String, Object>> getHistoryByPage(Page page, String id);

	int getHireCountByRecordNo(String recordNo);

	void addReportConfig(String backGround, CommonsMultipartFile reportWatermark) throws IOException;

	Map<String,Object> getLatest();

	boolean getHireByProve(String belongProveNumber, String hireStartTime, String hireEndTime);

	void addQRCode(HireEntity entity, String dirPath) throws IllegalStateException, IOException;

	String selectHireCode(String table, String type, String infoId);

	
	void addCases(String batchId, String xyjcp, String syztmc, String xydm,
			String ztlx,String tgdw, String xsyhnr, String fkdw, String fksj, long officeId, Long id);

	
	
	List<Map<String, String>> selectCaseForPage(Page page, String type, String xyjcp);

	
	
	void deleteData(String id);

	
	
	
	List<Map<String, String>> selectCaseDetail(String batchId);

	
	void deleteProduct(String id);


	
	void updateData(String batch_id, String xyjcp, String syztmc, String xydm, String ztlx, String tgdw,String fksj);
}
